本文是学习GB-T 18726-2011 现代设计工程集成技术的软件接口规范. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们
本标准规定了与技术信息系统(TIS)
相关的不同软件系统提供并开放信息交流的中间接口技术。
这些软件系统主要可分为以下几类:PDM、CAD、CAPP
等;开放的中间接口可用于支持与现代设计工
程相关的许多其他软件系统,如 CAE、CAM 等,也可支持如 ERP
等管理信息系统。
本标准适用于指导企业在实施技术信息集成过程中,定义不同软件的动态接口或在选购相关软件
时作为判断其可集成程度的参考。
下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文
件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。
GB/T 17304—2009 CAD 通用技术规范。
下列术语和定义适用于本文件。
3.1
技术信息系统 Technique Information System;TIS
技术信息主要是描述企业产品设计阶段所产生出来的有关产品定义、设计、设计过程等的相关信
息。例如产品的设计数据(图纸、计算书、设计说明等)、工程分析数据、工艺数据、设计流程数据等。管
理技术信息的软件系统就称为技术信息系统。
3.2
产品数据管理 Product Data Management;PDM
管理与产品相关的所有数据(包括工程规范、电子文档、图像、CAD/CAPP/CAM
文件、产品结构、
产品定单、供应状况等)和过程(包括工作流程、审批/发放过程、工程更改单等)的技术。它提供产品整
个生命周期的数据管理,并可在企业范围内为设计与制造建立一个并行化的产品开发协作环境。
3.3
计算机辅助设计 Computer-Aided Design;CAD
利用电子计算机的高速处理大容量存储和图形功能来辅助产品设计的技术,英文缩写CAD。
广义
地说,CAD 是指一切利用计算机辅助进行的设计和分析工作。
3.4
计算机辅助工艺规划 Computer-Aided Process
Planning;CAPP
利用计算机来进行零件加工工艺过程的制定,把毛坯加工成为工程图纸上所要求的零件,这一过程
称为计算机辅助工艺规划。它是通过向计算机输入被加工零件的几何信息(形状、尺寸等)和工艺信息
(材料、热处理、批量等),由计算机自动输出零件的工艺路线和工序内容等工艺文件的过程。
3.5
计算机辅助制造 Computer-Aided Manufacturing;CAM
利用电子计算机的高速处理和大容量存储功能辅助产品生产制造的技术,英文缩写CAM。
广义
GB/T 18726—2011
地说,计算机辅助制造是指一切由计算机直接或间接控制的产品生产制造过程。
3.6
中间件 Middleware
一个将数据与功能封装在一起以完成特定任务的计算机程序,它本身往往不能单独运行,要在其宿
主程序中与其他程序一起协调地工作。中间件把应用程序与系统所依附软件的较低层细节和复杂性隔
离开来,使应用程序开发者只处理某种类型的单个应用接口,其他细节则由中间件处理。
3.7
公共对象请求代理体系 Common Object Require Broker
Architecture;CORBA
由 OMG 制定的面向对象的中间件标准。
3.8
组件对象模型 Component Object Model;COM
由
Microsoft提出的面向对象的中间件标准,它定义了中间件程序之间进行交互的标准和所需的
运行环境。
3.9
ActiveX
实现微软COM
标准的一组技术,它使得采用该技术的软件不仅在本地计算机而且可以在国际互
联网上动态实现信息和功能的互操作。它定义的技术主要包括:ActiveX
控制(ActiveX Control)、Ac-
tiveX 文档(ActiveX Document)、ActiveX 组件(Active Component)等。
3.10
自动化对象 automation object
COM 对象的一个特例,它简化了COM 的一些底层细节,通过特定的 IDispatch
接口提供了一些弱
类型语言实现COM 对象的方法。
3.11
可扩展标记语言 Extensible Markup Language;XML
XML 即可扩展标记语言(Extensible Markup
Language),是一种平台无关的表示数据的方法。 XML
是目前信息系统中一种具有高度灵活性、应用非常广泛的技术标准,可以用于配置文件、Web
服
务、数据存储等等。
3.12
面向服务的架构 Service-Oriented Architecture;SOA
World Wide Web Consortium(W3C)将 SOA
定义为一套可以被调用的组件,用户可以发布并发 现其接口描述。 Component
Based Development and Integration(CBDI)组织将 SOA 定义为一种使用
了特定的策略、实践和框架的结构,按照特定的规范来交付服务。
3.13
工艺数据 process data
在产品工艺设计过程中产生的与产品工艺直接相关的数据信息。
3.14
加工单元 process unit
一个抽象的概念,某个部件、产品的工艺路线、某个零部件的不同专业的工艺过程(如机加工工艺、
热处理工艺、装配工艺)以及加工过程中的不同工序都可以作为加工单元处理。
3.15
加工单元集 process units
服务于某一特定工艺目的一组相关操作的加工单元的集合。
GB/T 18726—2011
3.16
过程记录集 process record set
一个二维数据表,该表中的每一条记录对应加工过程中的某个步骤。过程记录集是在工艺设计过
程中产生的。
下列缩略语适用于本文件。
OMG: 对象管理集团(Object Management Group)
ERP: 企业资源规划(Enterprise Resource Planning)
IDL: 接口定义语言(Interface Define Language)
MIDL: 微软接口定义语言(Microsoft Interface Define Language)
ODL: 对象定义语言(Object Define Language)
本标准定义了现代设计工程中相关软件系统应提供的接口内容及定义应遵循的原则,但不定义该
接口的具体实现。作为参考,规范给出了一些接口的实现实例。
本标准要求所有被定义开放的接口均使用面向对象的中间件技术。
每一接口的描述应包括如下内容:
a) 接口功能描述,可实现的接口级别;
b) 接口的运行环境,包括硬件和软件环境;
c) 接口定义所采用的语言及接口实现的语言工具;
d) 可用于使用接口的语言工具;
e) 接口定义:
f) 用于测试接口的实例。
本标准对接口定义了级别,该级别可用于判断软件可提供接口的水平。级别越高的接口,要求系统
的开放程度也越大,但实现的难度不一定大。
制造业流行的面向对象的接口定义语言大部分是在OSF (开放式软件基金会)的DCE
(分布式计算 环境)标准中制定的 IDL 的基础上发展而来的。例如,OMG 的 IDL
以及 Microsoft 的 MIDL。 因此在 本标准的实现中,推荐使用基于DCE 的 IDL。
软件开发者所使用的接口开发工具,可以采用相应的扩
展 IDL。
接口定义的级别主要依据以下几种原则进行划分:
第一级:可以提供浏览服务器数据的能力。如CAD 系统浏览器接口。
GB/T 18726—2011
第二级:可以提供提取服务器数据的能力。如 CAD
标准格式文件的转换器接口、工程图标题栏、
明细表数据的提取工具等。
第三级:可以提供存取服务器数据的能力。如CAD
系统提供的在其系统外部修改工程图标题栏、
明细表等管理数据的能力。修改数据一般是服务器系统的基本权利,但是如果可以开放其中的部分接
口,则可以促使不同系统之间达成更加完美的集成,所以将本级接口定为推荐采用接口。
第一级及第二级要求服务器系统提供其数据的出接口,第三级要求服务器系统提供其数据的入
接口。
一个服务器系统,并不一定在满足了所有的低级接口后才能满足高级接口。它可以在某些接口上
满足低级接口,而在其他接口上满足高级接口。
按照接口信息在设计过程中出现的不同阶段,规范将软件接口信息分为三类:产品数据管理软件开
放接口、计算机辅助设计软件开放接口、计算机辅助工艺设计软件开放接口。这种分类并不具体对应软
件供应商提供的相应系统:PDM 软件系统、CAD 软件系统、CAPP
软件系统。软件供应商可以在其提
供的系统中将开放的接口信息按照自己的数据结构定义,放在不同的软件系统中。例如,供应商可以将
工艺统计数据放在PDM 系统中,将工装设备统计数据放在CAM
系统中等。但是为了符合本标准,无
论这些信息在哪个软件系统中定义或管理,它们都应在其被定义的系统中以面向对象的中间件形式开
放接口。
本条定义的接口主要涉及到企业的产品设计数据的共享和操纵。这些数据目前主要由PDM
软件
或相关的软件进行处理。这里定义的接口涉及到产品数据的两个方面:产品的定义数据及设计过程中
的管理数据。
5.2.2 产品数据浏览器。接口级别: 一级
本接口使得客户程序可以浏览PDM
系统中的产品定义数据。该数据一般是以产品结构树形式派
生的。该浏览器一般提供如下功能:
a)
产品的装配或配置结构,该结构表达了产品的各组成部件和零件的装配或隶属关系;
b) 产品属性,它定义了产品的实用、制造及管理、性能等方面的数据;
c) 产品文档(产品文档的构成可能是很广泛的,在不同的 PDM
系统中可能会不同),例如,有的
PDM 系统可以浏览和产品制造有关的信息;
d)
产品的其他相关内容,例如,产品设计任务书、更改通知单等。由于不同的产品数据管理软件
对产品数据的表达范围和方式可能不同,因此各软件所开放的接口内容也可以不同。
接口参考实例见附录A。
5.2.3 设计过程数据浏览器。接口级别: 一级
本接口使得客户程序可以浏览 PDM 系统中的过程数据, 一般包含如下功能:
a) 浏览项目结构,项目结构是组织设计任务的一种层次化的方式,在不同 PDM
系统中有不同的
定义方法,采用本接口可以显示出PDM 系统定义的项目结构;
b)
浏览任务属性,任务属性是描述任务基本配置的一组信息,包括负责人、时间、要求、资源、流
程、状态等,在各 PDM 系统中有不同的数据项;
GB/T 18726—2011
c)
浏览任务文档,设计的过程是不断产生文档的过程,对任务文档的管理将为产品数据的管理提
供可控的、确认后的规范化数据,由于设计是一项反复修正、迭代的工作,故任务可能是有版
本的;
d)
浏览任务评审数据,过程数据是经过工作流程驱动后形成的规范化数据,在工作流程当中,将
产生各种任务的评审数据,如,评审意见、批注文件等是对任务的一种补充性的经验数据,在不
同 PDM 系统中有不同的处理方法。
接口参考实例见附录B。
5.2.4 产品数据提取接口。接口级别:二级
本接口使得客户程序可以按照服务器系统给定的格式提取产品的数据。这些数据可以是产品结
构、产品属性、技术要求、产品文档、产品更改等(其中产品结构提取接口在5.2.5详细说明),数据的定
义形式取决于服务器系统的产品的描述形式。
接口参考实例见附录 C。
5.2.5 产品 BOM 提取接口。接口级别:二级5
物料清单(BOM)
是产品结构的技术性描述文件。它表明了产品组件、子件、零件直到原材料之间
的结构关系,以及每个组装件所需要的各下属部件的数量。物料清单是一种树型结构,称为产品结构
树。 一般BOM 是指物料之间的关系树,BOM
可以从顶至底的跟踪和检索信息,也可以自底至顶的跟
踪检索信息。利用这些数据之间的层次关系可以作为很多功能模块的设计基础。
BOM 作为概括产品
零部件及材料等信息的结构化数据包,对支撑产品全生命周期的信息管理有着至关重要的作用,是
PLM/PDM/MIS/MRPⅡ/ERP 与 CAD,CAPP
等子系统的重要接口,是面向制造业的信息系统集成的
关键和核心。本接口提取产品的BOM
信息,按服务器给定的形式提供给客户程序。产品的 BOM 对
象包含三个子类型:
a) 设计BOM(EBOM) 是产品在工程设计阶段的产品结构的 BOM
形式。主要反映产品的设计
结构和物料项的设计属性。设计结构区别于装配结构和制造结构,是工程设计人员按照客户
定单合同中的产品功能要求,来确定产品需要哪些零部件,以及这些零部件之间的结构关系。
物料项的设计属性是产品功能要求的具体体现,如重量要求、寿命要求、外观要求等。
EBOM
是设计部门向工艺、生产、采购等部门传递产品数据的主要形式和手段。工艺部门依据
EBOM 进行工艺分工,编排零件的加工路线,进行零件的工艺设计。因而 EBOM
虽然属于纯
技术文件,不能用于生产计划,但它是工艺设计的直接数据源。它包含物料项的图纸信息,即
物料项的原始几何信息和结构关系。
b) 工艺 BOM(PBOM) 是产品工艺计划阶段的 BOM,
对于大型复杂机械产品尤其重要。大型复
杂机械产品零部件数据庞大、构型复杂、种类繁多、生产形式各种各样。因此,建立产品的工艺
计划对组织产品的生产极其重要。同时,工艺计划的作用还在于确立产品的零部件装配顺序
和装配结构。 PBOM 就是反映产品装配结构和装配顺序的 BOM 形式。 PBOM
中的信息对
于组织工艺设计、安排生产计划、制定采购计划都具有重要的作用。
c) 制造 BOM(MBOM) 是详细描述产品制造过程的BOM。MBOM 是生产的依据,是
MRP 运算 的输入信息联系 MPS (主生产计划)和 MRP
的桥梁,为生产的管理、采购、备料、制定销售价格
与成本核算提供依据。制造部门根据EBOM 和 PBOM,
决定装配件、自制件和最终产品的制 造方法。制造 BOM 信息主要以 EBOM
作为基础数据内容,另外还有工艺部门编制的工艺卡 片内容。在有些制造单位
MBOM 与 PBOM 是合而为一的。
接口参考实例见附录 D。
GB/T 18726—2011
5.2.6 设计过程数据提取接口。接口级别:二级
本接口使得客户程序可以按照服务器系统给定的格式提取过程数据。这些数据可以是任务属性、
工作文档、评审意见等,数据的定义形式取决于服务器系统的描述形式。
接口参考实例参见附录 E。
5.2.7 产品数据修改接口。接口级别:三级
本接口使得客户程序可以修改服务器系统中的产品数据。修改数据的规则由服务器接口定义。
接口参考实例参见附录 F。
5.2.8 产品数据获取接口。接口级别:三级
本接口使得服务器可以从客户程序中获得所需的产品数据。即客户端程序通过调用本接口,可以
将新的产品数据存入服务器系统,产品数据的格式由服务器接口定义。
接口参考实例参见附录 F。
5.3 计算机辅助设计软件开放接口定义
CAD 的设计信息被广泛应用于PDM、CAPP、CAM、ERP
等各种系统中。它是企业技术信息的重
要的数据源。因此,开放 CAD
系统的相关数据接口是本标准中很重要的组成部分。本标准定义的
CAD 开放接口主要包括CAD
系统中工程图纸的相关管理数据和通用图形格式转换接口。
5.3.2 CAD 图形浏览接口。接口级别: 一级
本接口使得其他系统可以在CAD 系统之外浏览相关CAD
系统的图形文件。虽然现在已经推出
了一些通用浏览器可以浏览一部分国际上较知名 CAD 系统的图形文件,但是CAD
系统提供商开放其
图形的浏览接口仍然是十分重要的,这是那些通用浏览器具有长久生命力的重要保障。
接口参考实例参见附录G。
5.3.3 CAD 工程图管理信息提取接口。接口级别:二级
该接口主要用于提取CAD
数据文件中的图纸管理信息,如图纸幅面、标题栏信息、明细表信息以
及装配结构信息等。所提取的信息为CAPP、PDM、ERP 等系统服务。
接口参考实例参见附录 H。
5.3.4 CAD 图形数据转换接口。接口级别:二级
本接口提供了将一种CAD 系统的图形文件转换为标准格式(例如,DXF、IGES
等)的接口。 CAD
软件提供商通过该接口开放自己读入标准数据格式文件的功能以及输出为标准格式文件的功能。
接口参考实例参见附录 I。
5.3.5 CAD 工程图管理信息修改接口。接口级别:三级
本接口要求 CAD 系统提供在其系统之外的修改 CAD
图形文件管理信息的接口。例如在将 CAD 设计文件存入 PDM
数据库以后,如果要在 PDM
中修改其标题栏、技术要求等有关管理方面的信息,则
可以使用本接口。本接口使得这种修改可以实现信息变化的双向相关。
GB/T 18726—2011
5.4 计算机辅助工艺设计软件开放接口定义
本条定义的接口主要涉及到产品加工工艺数据的存取,这部分数据主要由 CAPP
系统负责产生和 管理。但是在有的系统中,工艺统计数据是由PDM
系统产生和管理的,CAPP 系统只负责管理最原始
的工艺卡片数据,并将其提交给PDM 进行处理。也有一些 CAM 软件包含了CAPP
软件的内容。总
之无论这些工艺数据在哪些系统中定义,该系统都应按本标准开放相关的数据和功能的交换接口。
5.4.2 产品工艺数据浏览接口。接口级别: 一级
本接口提供的是对工艺数据的浏览器。在不同的系统中,由于工艺数据的结构和体现形式不同,因
而浏览方式不同。由于工艺数据的多样性,浏览器可以由一个接口给出,也可以由多个接口给出。例如
在有的系统中,工艺卡片数据的浏览由CAPP 负责,而工艺统计数据的浏览由PDM
负责。各服务器可
以根据其定义的工艺数据结构设计各自的浏览器。浏览器应可以浏览服务器中主要的工艺数据类型。
接口定义实例参见附录J 中的IcappCardviewX 接口。
5.4.3 产品工艺数据提取接口。接口级别:二级
由于工艺数据的多样性,工艺数据的提取接口也可能有多个。本接口主要应满足
PDM 系统、ERP
系统、CAM 系统对工艺数据提取的需要。
接口参考实例参见附录J 中的IprocessData 接口定义。
5.4.4 产品工艺统计数据提取接口。接口级别:二级
工艺统计数据也是工艺数据的一部分。但它们一般不是由工艺人员直接设计产生的,而是在系统
对工艺卡片等直接设计的数据进行统计整理后产生的,主要为 ERP
系统提供生产准备数据。这部分数
据在有的系统中由PDM 负责提供。
接口参考实例参见附录J 中的IcappSumData 接口定义。
为判定一种软件系统是否符合本标准的规定,应由规范的授权认证单位对相应软件进行符合性测
试。通过符合性测试的,可判定该软件系统在其符合性声明的范围内符合本标准。
符合性测试的目的是按照规范所规定的接口范围和实现的功能,对被测软件产品进行测试,以判定
其产品提供的集成接口是否达到规范所规定的要求。
由于不同的软件产品所提供的用于符合性测试的中间件可能会采用不同的硬件、软件技术平台及
中间件技术,所以测试的套件就会有较大差别。测试套件包括测试对象、测试用例及测试环境。
测试对象是由申请测试者提供的,它包括如下内容:
a) 提供符合本标准定义的开放接口的软件产品;
GB/T 18726—2011
b)
和开放接口信息相关的数据组织结构,测试者可以据此判断开放的信息是否完整;
c)
符合本部规范5.1.2的接口说明文档及规范实现的符合性声明,申请测试者在符合性声明中
应给出测试对象符合本标准的范围,这个范围也是该软件的符合性测试的范围。
申请测试者应提供可以公开的使用其接口的自测试用例及其源代码。测试用例的源代码可以用实
现接口的中间件技术所支持的任何一种语言编写。
申请测试者还应提供使用测试用例进行的自测试的测试报告。
根据测试对象的符合性声明,需要时测试者可以在申请测试者提供的用例之外编写新的测试用例,
以抽查测试对象在符合其中间件规范的其他环境中是否有效。
申请测试者应明确声明可运行其测试对象的计算机软、硬件环境。
本标准的符合性测试主要包括五个阶段:测试准备、静态测试、测试运行、结果分析、形成测试报告。
在测试准备阶段测试者应编写测试计划。测试计划包括测试内容、测试环境、测试完成时应提供的
测试文件、测试人员及其职责。
静态测试主要是对测试对象所提供的文档进行审查,并确定测试进行的环境及测试用例。概括为
以下几个方面:
a) 审查测试对象所提供的文档是否符合规范定义的格式。
b)
根据规范的定义和测试对象提供的符合性声明以及与开放接口信息相关的数据组织结构,判
断测试对象实现接口的完整性。
c)
根据测试对象的符合性声明,在测试对象所提供的测试用例之外,测试者还应采用可以调用接
口的其他语言编写测试用例以备测试。该用例应该由申请测试者认可,如果申请测试者不能
认可该用例,则应将其理由记录备案,如果需要应在测试报告中对其进行说明。
测试运行是运行可执行的测试套件的过程,这个过程要提供测试记录。测试记录应包括测试项目、
执行描述、测试通过准则以及测试结果。
结果分析和测试报告是指按照规范的定义,对照测试记录进行差异性分析后,对各个测试项目是否
符合本标准做出结论,结论可以是通过、不通过或无结论(对于无结论的测试必须详细阐述其理由)。然
后形成测试报告对结论进行详细阐述。
GB/T 18726—2011
(资料性附录)
产品数据浏览器接口实例
A.1 接口定义
a) 本接口运行在基于MicroSoft Windows 操作系统的微机单机或网络环境下;
b) 本接口描述采用MIDL 格式,用 Microsoft Visual C++编写;
c) 所有支持 COM 技术的编程语言均可以使用本接口,例如,Visual
C++、Visual Basic、VBA、
Delphi、PowerBuilder等;
d) 接口的 IDL 如下:
import "oaidl.idl";
import "ocidl.idl";
……… …… … ……… ………………… object,
…… uuid(EE2E767E-AC08- 11D4-9F99-00A00C138D91),
… … … ……………… dual,
…………… helpstring("IProductDataViewer Interface"),
……………………………… …… pointer default(unique)
interface
]
IProductDataViewer:IDispatch
[id(1), helpstring("method ShowBOM")] HRESULT
ShowBOM([in]BSTR ProdIDP,[in]BSTR ProdVerP,[in]BSTR
BOMType,[out,retval]LONG * statu);
[id(2),helpstring (" method ShowProductProperty")]
HRESULT ShowProductProperty ([in]BSTR ProdIDP,[in]BSTR
ProdVerP,[out,retval]LONG *statu);
[id(3),helpstring (" method ShowProductTech ")]
HRESULT ShowProductTech([in]BSTR ProdIDP,[in]BSTR
ProdVerP,[out,retval]LONG * statu);
[id(4),helpstring("method ShowProductDocument")]
HRESULT ShowProductDocument ([in]BSTR ProdIDP,[in]BSTR
ProdVerP,[in]BSTR DocType,[out,
retval]LONG * statu);
[id(5),helpstring (" method ShowProductECO")]
HRESULT ShowProductECO([in]BSTR ProdIDP,[in]BSTR
ProdVerP,[in]BSTR EcoID,[out,retval]
LONG * statu);
};
A.2 接口描述
A.2.1 浏览产品结构
HRESULT ShowBOM([in]BSTR ProdIDP,//产品代号
GB/T 18726—2011
[in]BSTR ProdVerP, …,
…
//产品版本号
[in]BSTR BOMType, … …
………………………………… //产品结构类型
[out,retval]LONG * statu //返回值
);
方法调用成功时:返回 VARIANT TRUE; 否则:VARIANT FALSE。
产品版本号为空("")时,表示默认为产品的当前版本;产品结构类型为空("")时,表示默认为产品
的设计BOM。
该方法先查询产品对应版本的相关结构类型,不存在则提示返回,存在则显示产品结构
信息,(处理方法视不同PDM
系统而定,可采用分层展开,即先展开产品层,根据交互来逐级展开其他
层,也可采用完全展开,即一次展开所有层次),其中在完全展开方式中,遍历时需要增加产品结构循环
嵌套(可能存在由于数据不规范,造成图号循环引用的情况)的判断处理,以避免死循环。
A.2.2 浏览产品属性
HRESULT ShowProductProperty
[in]BSTR ProdVerP,
[out,retval]LONG * statu
);
([in]BSTR ProdIDP, ……………………………// 产品代号
…… ….
….…
//产品版本号
//返回值
方法调用成功时:返回VARIANT TRUE; 否则:VARIANT FALSE。
产品版本号为空("")时,表示默认为产品的当前版本。该方法用于显示产品相关的属性信息,对于
不同的PDM
系统所显示的内容不同,可以包括:代号、名称、设计者、负责人等设计属性。
A.2.3 浏览产品技术要求
HRESULT ShowProductTech([in]BSTR ProdIDP,…………………………………//产品代号
[in]BSTR ProdVerP, · · ···
style="width:6.12656in;height:0.15334in" />
[out,retval]LONG * statu
);
方法调用成功时:返回VARIANT TRUE;
//产品版本号
//返回值
否则:VARIANT FALSE。
产品版本号为空("")时,表示默认为产品的当前版本。该方法用于显示产品相关的技术要求内容。
A.2.4 浏览产品文档
HRESULT ShowProductDocument([in]BSTR
[in]BSTR ProdVerP,
[in]BSTR DocType,
[out,retval]LONG * statu
ProdIDP,……………………………
… · · ·
…
//产品版本号
style="width:3.78833in;height:0.17982in" />
… · ·
//返回值
//产品代号
·
… …
//文档类型
style="width:5.80963in;height:0.1665in" />
GB/T 18726—2011
);
方法调用成功时:返回 VARIANT TRUE; 否则:VARIANT FALSE。
产品版本号为空("")时,表示默认为产品的当前版本;文档类型为空("")时,表示默认为产品的主
设计图(二维)或主模型文件(三维)。该方法先查询产品对应版本的相关文档类型,不存在则提示返回,
存在则显示指定文档,完成从服务器中下载文档,并在浏览界面中打开(不同 PDM
系统的具体处理方
法不一样)。
A.2.5 浏览产品更改单
HRESULT ShowProductECO([in]BSTR ProdIDP, … … … … … … … … … … … … … …
… … … …
//产品代号
[in]BSTR ProdVerP,
style="width:6.11334in" />
.
//产品版本号
[in]BSTR EcolD,
[out,retval]LONG * statu
);
…
style="width:3.28132in;height:0.28638in" />
//返回值
//更改单号
方法调用成功时:返回 VARIANT TRUE; 否则:VARIANT FALSE。
更改单号为空("")时,表示显示该版本产品对应的所有更改单,更改单显示内容由各
PDM 系统进
行定义。
GB/T 18726—2011
(资料性附录)
设计过程数据浏览器接口实例
B . 1 接 口 定 义
a)本接口运行在基于MicroSoft Windows 操作系统的微机单机或网络环境下;
b)本接口描述采用MIDL格式,用 Microsoft Visual C++编写;
c)所有支持COM技术的编程语言均可以使用本接口,例如,Visual C++、Visual
Basic、VBA、
Delphi、PowerBuilder等;
d ) 接 口 的 I D L 如 下 :
interface IProjectDataViewer:IDispatch
[id(1),helpstring("method ShowProjectStruct")]
HRESULT ShowProjectStruct([in]BSTR PrjtID,[out,retval]LONG *
statu);
[id(2),helpstring("method ShowProjectProperty")]
HRESULT ShowProjectProperty([in]BSTR PrjtID,[out,retval]LONG
*statu);
[id(3),helpstring("method ShowProjectDocument")] HRESULT
ShowProjectDocument([in]BSTR PrjtID,[in]BSTR PrjtVer,[in]BSTR
DocType,[out,
retval]LONG ×statu);
…… [id(4),helpstring("methodShowAuditData")]
HRESULT ShowAuditData([in]BSTR PrjtID,[in]BSTR
PrjtVer,[out,retval]LONG *statu);
};
B . 2接口描述
B .2 . 1浏览项目结构
HRESULT ShowProjectStruct([in]BSTR PrjtID ………………………………………………
//项目代号
[out,retval]LONG * statu //返回值
);
方法调用成功时:返回VARIANT TRUE;否则:VARIANT FALSE。
在不同PDM系统中对项目结构有不同的处理方法,视结构数据量的大小,可采用分层展开,即先
展开产品层,根据交互来逐级展开其他层,也可采用完全展开,即一次展开所有层次。
B .2 .2浏览任务属性
HRESULT ShowProjectProperty([in]BSTR PrjtID ……………………………………………
//项目代号
[out,retval]LONG *statu //返回值
);
方法调用成功时:返回VARIANT TRUE;否则:VARIANT FALSE。
该方法显示任务的属性,属性的具体内容由各PDM系统进行规定。
GB/T 18726—2011
B . 2 .
3浏览任务文档
HRES]Pr jrorc,ument ([in]BSTR
PrjtIstyle="width:0.4673in;height:0.97902in" />…………………………………………………………
style="width:0.4673in;height:0.97902in" />/…项目
style="width:0.4673in;height:0.97902in" />号
style="width:3.50618in;height:0.2664in" />
[in]BSTR DocType,
//项目版本号
style="width:6.63947in;height:0.2664in" />
//文档类型
[out,retval]LONG * statu //返回值
);
方法调用成功时:返回VARIANT TRUE;否则:VARIANT FALSE。
项目版本号为空("")时,表示默认为项目的当前版本;文档类型为空("")时,显示该项目版本下的
所有文档。该方法先查询产品对应版本的相关文档类型,不存在则提示返回,存在则显示指定文档,完
成从服务器中下载文档,并在浏览界面中打开(不同PDM系统的具体处理方法不一样)。
B .2 .4浏览任务评审数据
HRESULT ShowAuditData([in]BSTR PrjtID ……………………………………………………
//项目代号
[in]BSTR PrjtVer,
[out,retval]LONG * statu
);
//项目版本号
//返回值
方法调用成功时:返回VARIANT TRUE;否则:VARIANT FALSE。
项目版本号为空("")时,表示默认为项目的当前版本。该方法用于显示指定版本的项目(任务)相
关的工作流程中的评审数据,具体内容视不同PDM系统而定。
style="width:1.37997in" />
style="width:1.93331in" />
GB/T 18726—2011
(资料性附录)
产品数据提取接口实例
C.1 接口定义
a) 本接口运行在基于MicroSoft Windows 操作系统的微机单机或网络环境下。
b) 本接口描述采用MIDL 格式,用Microsoft Visual C++编写。
c) 所有支持COM 技术的编程语言均可以使用本接口,例如,Visual
C+十、Visual Basic、VBA、 Delphi、PowerBuilder等。
接口的IDL 如下:
interface IProductDataContainer:IDispatch
HRESULT
[out]BSTR
GetProductProperty([in]BSTR
*FieldValue,[out,retval]LONG
[id(1),helpstring("method GetProductProperty")] ProdIDP,[in]BSTR
ProdVerP,[in]BSTR FieldType,
* statu);
[id(2),helpstring("method GetProductTech")]
HRESULT GetProductTech([in]BSTR ProdIDP,[in]BSTR
ProdVerP,[out]BSTR * FileName,
[out,retval]LONG * statu);
[id(3),helpstring("method GetProductDocument")] HRESULT
GetProductDocument ([in]BSTR ProdIDP,[in]BSTR ProdVerP,[in]BSTR
FileType,
[out]BSTR * FileName,[out,retval]LONG * statu);
....[id(4),helpstring("method GetProductECO")] HRESULT
GetProductECO([in]BSTR ProdIDP,[in]BSTR ProdVerP,[in]BSTR
EcoNo,[out]
BSTR *FileName,[out,retval]LONG *statu);
};
C.2 接口描述
C.2.1 获取产品属性
HRESULT GetProductProperty([in]BSTR ProdIDP, ………………………………// 产品代号
[in]BSTR ProdVerP,
[in]BSTR FieldType,
[out]BSTR *FieldValue,
[out,retval]LONG * statu
);
方法调用成功时:返回 VARIANT TRUE;
其中属性字段用"-"来进行分隔组合,返回的属性内容与字段项相对应,也用"-"分隔,空内容用
NULL 来表示。
GB/T 18726—2011
属性字段描述为:字段名称1字段名称2 …字段名称n
属性内容描述为:字段内容1~字段内容2 …字段内容n
示例:
输入属性字段:“代号名称*材料-图幅*图纸类型^设计者*设计日期当前版本……
”
输出属性内容:“A000-101-车体支架~NULL-A1*装配图陈刚-2000-3-2*2.0.1……
”
C.2.2 获取产品技术要求
HRESULT GetProductTech([in]BSTR ProdIDP,……………………………………//产品代号
[in]BSTR ProdVerP, · · ··· //产品版本号
[out]BSTR *FileName, ...........…, //技术要求文件名,
[out,retval]LONG * statu ……………………… //返回值
);
方法调用成功时:返回VARIANT TRUE; 否则:VARIANT FALSE。
该接口调用后,返回一个 ASCI
码的文本文件,包含了对应版本产品的技术要求内容,具体格式由
各 PDM 系统自定义。
C.2.3 获取产品设计文档
HRESULT GetProductDocument([in]BSTR
[in]BSTR ProdVerP,
[in]BSTR FileType,
[out]BSTR * FileName,
[out]int FileCount,
[out,retval]LONG * statu
);
ProdIDP,
style="width:1.28414in" />
… .…
....... ......
.. . ....... ...
………………………………//产品代号
//产品版本号, ... //文档说明,
..... //文档名称,
.... //文档数量,
………………………… //返回值
方法调用成功时:返回VARIANT TRUE; 否则:VARIANT FALSE。
该接口支持获取指定的设计文档,以及支持获取所有的设计文档,设计文档以下载到本地的方式,
返回本地完整的文件名称(带路径)。
a) 获取指定的设计文档
文档说明用"-"来进行分隔组合,返回的文档数组中文档次序与文档说明对应。返回的文档为一个
指针数组,数组长度为返回的文件数量 FileCount。
示例:
输入文档类型:“设计图"测试结果~安装示意图…… ”
输出文档名称:
FileName[0]="C:\Output \A00-010.prt"
FileName[1]="C:\Output \report.doc"
FileName [2]="C:\Output \安装图.dwg"
·· ··
b) 获取所有的设计文档
设置文档说明为空(""),此时,返回的文档为一个指针数组,数组中每项目在每个文档名称后追加
上对应的文档类型,用"\$"来区分;数组长度为返回的文件数量 FileCount。
示例:
输入文档类型:""
输出文档名称:
FileName [0]=“C:\Output \A00-010.prt\$设计图”
GB/T 18726—2011
FileName[1]=“C:\Output \report.doc\$测试结果”
FileName[2]=“C:\Output\ 安装图.dwg\$ 安装示意图”
····
C.2.4 获取产品更改通知单
HRESULT GetProductECO([in]BSTR
[in]BSTR ProdVerP
[in]BSTR EcoNo
[out]BSTR *FileName
[out,retval]LONG * statu
);
ProdIDP,……………………………………//产品代号
style="width:1.37997in" /> //产品版本号,
style="width:1.63328in" /> //更改单编号,
…… //更改通知单文件名,
………………………… //返回值
方法调用成功时:返回VARIANT TRUE; 否则:VARIANT FALSE。
该接口调用后,返回一个ASCII
码的文本文件,包含了对应版本产品指定的更改单的内容,具体格
式由各PDM
系统自定义。如果更改单编号为空(""),将返回对应的所有更改单内容。
GB/T 18726—2011
(资料性附录)
产品 BOM 提取接口实例
D.1 接口定义
a) 本接口运行在基于MicroSoft Windows 操作系统的微机单机或网络环境下。
b) 本接口描述采用MIDL 格式,用 Microsoft Visual C++编写。
c) 所有支持COM 技术的编程语言均可以使用本接口,例如,Visual
C++、Visual Basic、VBA、 Delphi、PowerBuilder等。
接口的IDL 如下:
interface IProductBOM Container:IDispatch
[id(1),helpstring("method GetSimgleBOM([in]BSTR ProdIDP,[in]BSTR
ProdVerP,[in]BSTR
Type,[out]BSTR *FileName,[out,retval]LONG × statu);
[id(2),helpstring("method
GetExpandBOM([in]BSTR ProdIDP,[in]BSTR ProdVerP,[in]BSTR
*FileName,[out,retval]LONG
;
GetSimgleBOM")] HRESULT
BOMType,[in]BSTR Field-
GetExpandBOM")] HRESULT
BOMType,[in]BSTR Field-
D.2 接口描述
D.2.1 获取单层的产品 BOM
HRESULT GetSimgleBOM([in]BSTR
[in]BSTR ProdVerP,
[in]BSTR BOMType,
[in]BSTR FieldType,
[out] BSTR *FileName,
[out,retval]LONG * statu
ProdIDP, / / 产 品 代 号
//产品版本号
//BOM 类型
//属性字段
//返的文件名
//返回值
);
方法调用成功时:返回VARIANT TRUE; 否则:VARIANT FALSE。
该方法提供了获取指定版本的产品下一级装配结构信息。 BOM 类型表示是设计
BOM、 工艺
BOM、 制造 BOM 等,具体由各 PDM
系统进行定义,如果为空时,默认为设计BOM(EBOM)。 属性字
段是指获取的产品 BOM 的信息,各表示为 BOM 数据的XML 文件中的一个节点。
示例:
(BOM>
style="width:0.23332in" />
\<BOMAtrribut Name="上层代号"〉A000-101\</ BOMAtrribut 〉
\<BOMAtrribut Name="上层图名"〉车体支架\</ BOMAtrribut 〉
\<BOMAtrribut Name="代号"> A000-101-1\<!-- BOMAtrribut )
GB/T 18726—2011
\<BOMAtrribut \<BOMAtrribut \<BOMAtrribut \<BOMAtrribut \<BOMAtrribut
\<BOMAtrribut \<BOMAtrribut
·
(/BOM-->
Name="名称"〉横梁\<!-- BOMAtrribut )
Name="材料"-->\<!-- BOMAtrribut〉
Name="图幅"〉A2\</ BOMAtrribut 〉
Name="图纸类型"〉装配图\</ BOMAtrribut)
Name="设计者"〉陈刚\</ BOMAtrribut)
Name=”设计日期”〉2000-3-2\</ BOMAtrribut 〉
Name="当前版本"〉2.0.1\ BOMAtrribut \-->
D.2.2 获取展开的产品 BOM
HRESULT GetExpandBOM([in]BSTR
[in]BSTR ProdVerP,
[in]BSTR BOMType,
[in]BSTR FieldType,
[out] BSTR *FileName,
[out,retval]LONG * statu
);
ProdIDP, //产品代号
//产品版本号,
//BOM 类型,
//属性字段,
//返的文件名,
//返回值
该方法提供了获取指定版本的产品完整的装配结构信息,与"获取单层的产品
BOM" 方法的唯一
不同是需要遍历展开产品的装配结构,再进行数据处理。参数说明及使用方法见D.2.1。
GB/T 18726—2011
(资料性附录)
设计过程数据提取接口实例
E.1 接口定义
a) 本接口运行在基于MicroSoft Windows 操作系统的微机单机或网络环境下。
b) 本接口描述采用MIDL 格式,用 Microsoft Visual C++编写。
c) 所有支持COM 技术的编程语言均可以使用本接口,例如,Visual
C+十、Visual Basic、VBA、 Delphi、PowerBuilder等。
d) 接口的IDL 如下:
interface IProjectDataContainer:IDispatch
[id(1),helpstring("method GetProjectProperty")]HRESULT
GetProjectProperty ([in]
BSTR PrjtID,[in]BSTR FieldType,[out]BSTR
*FieldValue,[out,retval]LONG
[id(2),helpstring("method GetProjectDocument")] HRESULT ([in]BSTR
PrjtID,[in]BSTR PrjtVer,[in]BSTR FileType,[out]BSTR *
LONG statu);
* statu);
GetProjectDocument
FileName,[out,retval]
[id(3),helpstring("method GetAuditData")] HRESULT
GetAuditData([in]BSTR
PrjtID,[in]BSTR PrjtVer,[out]BSTR *FileName,[out,retval]LONG
*statu);
};
E.2 接口描述
E.2.1 获取任务属性
HRESULT GetProjectProperty ([in]BSTR PrjtID, | //项目代号 |
---|---|
[in]BSTR FieldType, | //属性字段, |
[out]BSTR *FieldValue, | //属性内容, |
[out,retval]LONG * statu |
|
);
方法调用成功时:返回VARIANT TRUE; 否则:VARIANT FALSE。
其中属性字段用""来进行分隔组合,返回的属性内容与字段项相对应,也用"-"分隔,空内容用
NULL 来表示。
属性字段描述为:字段名称1字段名称2 …字段名称 n
属性内容描述为:字段内容1字段内容2…字段内容 n
示例:
输入属性字段:"代号-名称负责人*完成日期-状态……"
输出属性内容:“P2000-10GT 小车改进-陈刚-2000-7-20-评审…… ”
E.2.2 获取任务文档
HRESULT GetProjectDocument([in]BSTR PrjtID, //项目代号
GB/T 18726—2011
[in]BSTR PrjtVer,
[in]BSTR FileType,
[out]BSTR * FileName,
[out,retval]LONG * statu
//项目版本号,
//文档说明,
//文档名称,
//返回值
);
方法调用成功时:返回VARIANT TRUE; 否则:VARIANT FALSE。
该接口支持获取指定的任务文档,以及支持获取所有的任务文档,任务文档以下载到本地的方式,
返回本地完整的文件名称(带路径)。项目版本号为空时,表示当前版本。
E.2.3 获取指定的任务文档
文档说明用"~"来进行分隔组合,返回的文档名称与文档说明对应,也用"-"分隔。
示例:输入文档类型:“设计图^测试结果安装示意图…… ”
输出文档名称:“C:\Output \A00-010.prt C:\Output \report.doc' C:\Output
\安装图.dwg…… ”
E.2.4 获取所有的任务文档
设置文档说明为空(""),此时,返回的文档名称在用""分隔的基础上,在每个文档名称后追加上对
应的文档类型,用"\$"来区分。
示例:输入文档类型:""
输出文档名称:"C:\Output \A00-010.prt\$设计图-C:\Output
\report.doc\$测试结果- C:\Output \安装
图 .dwg\$ 安装示意图 …… ”
E.2.5 获取项目评审意见
HRESULT GetAuditData([in]BSTR PrjtID,
[in]BSTR PrjtVer
[out]BSTR *FileName
[out,retval]LONG * statu
);
//项目代号
//项目版本号,
//评审意见文件名,
//返回值
方法调用成功时:返回 VARIANT TRUE; 否则:VARIANT FALSE。
该接口调用后,返回一个ASCII
码的文本文件,包含了对应版本的任务相关的评审意见内容,具体
格式由各 PDM 系统自定义。
GB/T 18726—2011
(资料性附录)
产品数据修改接口实例
F.1 接口定义
a)
本接口用于从客户端获取产品数据及其结构定义的数据。通过新建功能可以从
PDM 外部建 立产品的数据,通过更新功能可以从 PDM
外部修改产品的数据。产品数据中的产品结构用
类似明细表的表达方式,将客户的装配图数据放入PDM
数据库中,并自动建立产品的数据结
构。接口可获取的产品数据包括产品的图纸、标题栏、技术要求。为了便于理解,图
F.1 给出
了本 PDM 中对产品数据的描述简图。
style="width:8.34028in;height:2.84722in" />
图 F.1 PDM 开放数据组成
b) 本接口运行在基于 MicroSoft Windows
操作系统的微机单机或网络环境下;
c) 本接口描述采用MIDL 格式,用Visual Basic语言编写;
d) 所有支持COM 技术的编程语言均可以使用本接口,例如,Visual
C++、Visual Basic、VBA、 Delphi、PowerBuilder等;
e) 接口的IDL 如下:
object,
uuid(EBDC5E30-0092- 11D4-AC87-0080C8761927),
dual,
helpstring("clsCad Interface"),
pointer default(unique)
interface clscad:IDispatch
[id(1),helpstring("method SaveBom")]
BSTR ProdVerP,[in]BSTR FieldText,[in]BSTR
retval]LONG *statu);
[id(2),helpstring("method SaveTech")]
HRESULT SaveBom([in]BSTR ProdIDP,[in]
Style,[in,optional]VARIANT Owner ,[out,
HERESULT SaveTech([in]BSTR DrawNof,
BSTR DrawVerf,BSTR FileN,[out,retval]LONG *status);
[id(3),helpstring("method SaveDwg")]HRESULT SaveDrawing(BSTR
DrawNoP,BSTR
GB/T 18726—2011
DrawVerP,BSTR FileN,BSTR ProdIDP,BSTR ProdVerP,[out,retval]LONG *
[id(4),helpstring("method SaveTitle")]HRESULT SaveTitl(BSTR
DrawVerP,BSTR FieldText,[out,retval]LONG * status);
status);
DrawNoP,BSTR
f) 该接口在计算机中接口对象的名字为:PrjCadDII.
ClsCad,它的服务器文件名为“Prjcaddll.
dll",支持 Automation 和COM 双接口。
F.2 接口描述
F.2.1 产品明细入库
HRESULT SaveBom([in]BSTR ProdIDP,
[in]BSTR ProdVerP,
[in]BSTR FieldText,
[in]BSTR style,
[in,optional]VARIANT Owner,
[out,retval]LONG * status
);
//产品代号
//产品版本号
//明细表数据
//产品状态
//字符型,产品的拥有者
//返回值
方法调用成功时:返回VARIANT TRUE; 否则:VARIANT FALSE。
产品状态取值如下:" New"
表示该产品为新入库,系统将删除原有数据再写入新的数据。如果存
入的产品结构不存在,则本方法新建一个产品结构,同时建立产品结构上相关的产品基础属性数据。如
果相应的产品结构已经存在,则刷新原有的数据。
a) 每一类明细属性及其数据用符号"~"分开,表示如下:
属性1=属性1值字符串属性2=属性2值字符串 ……
b) 属性值的数据项用"&."分开,表示如下: 值1&.值2& … …
c) 各个属性值的项数必须相等;
d) 对于标准件必须提供规格属性;
e) 如果属性的某项没有值,则用""表示;
f) 对于单件重量用"\$"将重量与单位分开,如100 \$kg;
g) 对于标准件必须有规格,否则视同非标件;
h) 除了代号、非标准件版本号和标准件规格号以外,其他属性都可以省略;
i) 如果用户给出了系统未定义的属性,它将被忽略。 示例: 序号=10& .
11&1& . 2&3&4&5& . 6&7&8&9代号
=GB6174-86&GB67-85&655-2. 1.0&.655D- 1.0&.655-2.
1-0&.655-2.2&.655-2.3(1)&655-2.3(2)&655-2.4-
0&.655-2.5&.655-2.1.5*名称=六角薄螺母&.开槽盘头螺钉&.电池盒部&.线路板(一)&.壳体&.堵盖&面
板(一)&.面板(二)&.壳体档板&.线路板立柱&触点簧片数量=6&.2&.1&.1&1&.2&.1&.1&1&.4&.2-材料=
HOb59-1&.HPb59-1&.NULL&.NULL&.ABS(橘红)&.丁腈橡胶&.NULL&.PVC&.ABS
(橘红)&.HPb59- 1&.3J9单件
= NULL\$NULL&NULL\$NULL&NULL\$NULL&.NULL\$NULL&NULL\$NULL&NULL\$
NULL&NULL \$NULL&.NULL\$
NULL&.NULL\$NULL&.NULL\$NULL&.NULL\$NULL*总计=NULL&.NULL&.NULL&.NULL
&.NULL&.NULL&.NULL&.NULL&,NULL&.NULL&.NULL备注=NULL&.镀银&.NULL&.NULL&.NULL&.NULL&.
选用国内&.NULL&.NULL&.NULL&.NULL ·版本号
=NULL&.NULL&.1.0&.1.0&1.0&.1.0&.1.0&1.0&1.0&.1.0&.1.0-规格
=M2&.M2X6&NULL&NULL&.NULL&.NULL&.NULL&.NULL&.NULL&.NULL&.NULL
标识=标准件
GB/T 18726—2011
&.标准件
&.NULL&.NULL&.NULL&.NULL&.NULL&. 选用德国&.NULL&.NULL&.NULL
F.2.2 保存技术要求
HERESULT SaveTech([in]BSTR DrawNof,
BSTR DrawVerf,
BSTR FileN,
[out,retval]LONG * status
);
//技术要求所属的图档代号
//技术要求所属的图档版本号
//包含路径的技术要求文件名
//返回值,成功时返回
//VARIANT TRUE, 否则返回
//VARIANT FALSE
_
本接口创建或更新已有图档的技术要求。技术要求文件的格式只能采用纯 ASCII
码的形式,例如
用 Windows NotePAD编辑的文件。
F.2.3 保存图档文件
HRESULT SaveDrawing(BSTR DrawNoP,
BSTR DrawVerP,
BSTR FileN,
BSTR ProdIDP,
BSTR ProdVerP,
[out,retval]LONG * status);
//图档代号
//图档版本号
//带有路径的图档文件名
//图档所属的产品代号
//图档所属的版本号
//返回值,成功时返回
//VARIANT TRUE, 否则返回
//VARIANT FALSE
本方法将与产品有关的图档存入库中,
一个产品可以有多个图档。如果相同的图档已经存在,则本
方法更新图档的内容。
F.2.4 保存图档的标题栏
HRESULT SaveTitl(BSTR DrawNoP,
BSTR DrawVerP,
BSTR FieldText,
[out,retval]LONG * status);
//标题栏所属的图档代号
//标题栏所属的图档版本号
//标题栏字符串
//返回值,成功时返回
//VARIANT TRUE, 否则返回
//VARIANT FALSE
在调用本功能之前,标题栏必须在本 PDM
中已经定义。如果在标题栏字符串中出现的属性名称
没有定义,则该属性被忽略。如果相应图档的标题栏已经存在,本方法更新标题栏内容。
GB/T 18726—2011
(资料性附录)
CAD 系统开放接口实例
G.1 CAD 系统开放接口模型(见图 G.1)
style="width:5.98669in;height:2.33992in" />CAD 图形浏览组件
CADXXXViewCtrl
CAD 图形浏览接口
ICADView
CAD 数据交换组件
CADXXXExchange
CAD 数据处理组件
style="width:3.94722in;height:10.30694in" />
图 G.1 CAD 系统开放接口模型
G.2 CAD 图形浏览接口定义
a) ICADView 定义了一个 CAD 图形浏览接口。通过该控件可以浏览 CAD
系统特定文件格式
的图形,符合规范5.3.2的规定;
b) 本接口运行在基于 MicroSoft Windows 操作系统的微机环境下;
GB/T 18726—2011
c) 本接口描述采用ODL 格式,用 MFC 语言编写;
d) 所有支持COM 技术的编程语言均可以使用本接口,例如,Visual C十 +
、Visual Basic、VBA、 Delphi、PowerBuilder等;
e) 接口的 IDL 如下: import "oaidl.idl";
import "ocidl.idl"; #include "olectl.h"
[
object,
uuid(7CC65900-900F-4EC5-9969- 18464ACE7ABB),
dual,
helpstring("ICADView Interface"),
pointer default(unique)
]
interface ICADView:IDispatch
[id(1),helpstring("method
[id(2),helpstring("method 关 filename);
OpenFile")]HRESULT OpenFile([in] BSTR filename);
GetFileName")]HRESULT GetFileName ([out] BSTR
str);
*
[id(3),helpstring("method
[id(4),helpstring("method
cmdstr);
;
SetCommand")]HRESULT SetCommand ([in] BSTR cmd-
GetCommand")] HRESULT GetCommand ([out] BSTR
G.3 CAD 图形浏览接口描述
G.3.1 打开图形文件
HRESULT OpenFile(
[in] BSTR filename //带路径的文件名
);
方法调用成功时:返回VARIANT TRUE; 否则:VARIANT FALSE。
G.3.2 获取当前打开的文件名
| HRESULT GetFileName( | |
|-------------------------|------------------------------|
| [out] BSTR *filename | //当前打开的带路径的文件名称 |
);
方法调用成功时:返回VARIANT TRUE; 否则:VARIANT FALSE。
G.3.3 发送命令
HRESULT SetCommand(
[in] BSTR cmdstr
//要设置的命令,有如下约定值
//"pan"平移
GB/T 18726—2011
//"zoomwin" 窗口放大
//"zoomall"显示全部
//"zoominout" 动 态 缩 放
//"rotate"旋转变换(3D 独有)
);
方法调用成功时:返回VARIANT TRUE; 否则:VARIANT FALSE。
G.3.4 获取当前执行的命令
HRESULT GetCommand(
[out] BSTR *cmdstr //当前命令字符串
);
方法调用成功时:返回 VARIANT TRUE; 否则:VARIANT FALSE。
GB/T 18726—2011
(资料性附录)
CAD 工程图管理信息提取接口实例
H.1 接口定义
a) 本组件定义了一组用于对CAD
图形信息处理的接口。它包括两个接口:ICADFile 及 ICAD- Info。
接口用于实现规范的5.3.3的规定。
b) 本组件运行在基于MicroSoft Windows 操作系统的微机环境下。
c) 本组件描述采用MIDL 格式,采用Visual C++语言编写。
d) 所有支持 COM 技术的编程语言均可以使用本接口,例如,Visual
C++、Visual Basic、VBA、 Delphi、PowerBuilder等。
e) 接口的 IDL 如下:
object,
uuid(4F6871BA-8B0B-4478-9D95-8630804714BC),
dual,
helpstring("ICADFile
Interface"),
pointer default(unique)
]
interface ICADFile:IDispatch
[id(1),helpstring("method OpenFile")] HRESULT OpenFile([in] BSTR
filename);
[id(2),helpstring("method GetFileName")] HRESULT GetFileName
([out] BSTR * filename):
[id(3),helpstring("method GetVersion")] HRESULT GetVersion([out]
BSTR
* version);
[id(4),helpstring("method CloseFile")] HRESULT CloseFile();
};
object,
uuid(E7E8F5D0-5C66-487B-8722-37AA5A473F56),
dual,
helpstring("ICADInfo Interface"),
pointer default(unique)
]
interface ICADInfo:IDispatch
[id(1),helpstring("method GetPaperSizeNo")]
* sizeno,[out] BYTE * direction);
[id(2),helpstring("method GetPaperSize")]
HRESULT
HRESULT
GetPaperSizeNo([out] BYTE
GetPaperSize([out] double
GB/T 18726—2011
* width,[out] double *height); [id(3),helpstring("method
* factor);
[id(4),helpstring("method
* count);
[id(5),helpstring("method
item,[out] BSTR * itemvalue);
[id(6),helpstring("method
* count);
[id(7),helpstring("method
* header);
[id(8),helpstring("method
BSTR *itemvalue);
GetScaleFactor")] HRESULT GetScaleFactor ([out] double
GetHeaderCount")] HRESULT GetHeaderCount([out] long
GetHeaderltem")] HRESULT GetHeaderltem([in] VARIANT
GetBomCount")] HRESULT GetBomCount ([out] long
GetBomHeader")] HRESULT GetBomHeader([out] BSTR
GetBomltem")] HRESULT GetBomltem([in] int index,[out]
|
|
|
|
---|---|---|---|
instruction); | |||
[id(10),helpstring("method |
|
|
|
* type); | |||
[id(11),helpstring("method |
|
|
|
*
modelname);
[id(12),helpstring("method
GetAsmStructer")] HRESULT GetAsmStructer([out]
BSTR* structure);
};
H.2 接口描述
H.2.1 ICADFile 接 口 描 述 :
在使用ICADData 组件的其他接口时,都必须先调用ICADFile 接口方法打开CAD
的数据文件。
H.2.1.1 打 开 文 件
HRESULT OpenFile(
[in] BSTR filename //filename要打开的带路径的文件名称
);
方法调用成功时:返回VARIANT TRUE; 否则:VARIANT FALSE。
H.2.1.2 获取打开的文件名
HRESULT GetFileName(
[out] BSTR *filename //filename为当前打开的文件名称(带路径)
);
方法调用成功时:返回 VARIANT TRUE; 否则:VARIANT FALSE。
H.2.1.3 获取打开的文件版本号
HRESULT GetVersion(
[out] BSTR * version //version 为打开文件的版本号
);
方法调用成功时:返回VARIANT TRUE;
否则:VARIANT FALSE。
H.2.1.4 关闭当前文件
HRESULT CloseFile();
关闭当前打开的文件,方法调用成功时:返回VARIANT TRUE;
GB/T 18726—2011
否则:VARIANT FALSE。
H.2.2 ICADInfo 接 口 描 述 :
本接口提供的方法用于从CAD 文件中获取用于管理方面的(如 PDM
存档)所需的数据。
H.2.2.1 获取图幅代号
HRESULT GetPaperSizeNo(
[out] BYTE *sizeno, //sizeno:0、1、2、3、4、5
分别对应:A0、A1、A2、A3、A4、//自定义
[out] BYTE *direction //direction:0— 横放,1— 竖放
);
方法调用成功时:返回VARIANT TRUE;
H.2.2.2 获取图幅尺寸
否则:VARIANT FALSE。
HRESULT GetPaperSize(
[out] double * width, //width:图纸宽
[out] double * height //height:图纸高
);
方法调用成功时:返回VARIANT TRUE; 否则:VARIANT FALSE。
H.2.2.3 获取图幅绘制比例
HRESULT GetScaleFactor(
[out] double * factor //factor:绘图比例系数
);
方法调用成功时:返回VARIANT TRUE; 否则:VARIANT FALSE。
H.2.2.4 获取标题栏属性数量
HRESULT GetHeaderCount(
[out] long *count
//count:标题栏包含的项数,如(制图-张三)(日期~2000.10.10)……
);
H.2.2.5 获取标题栏属性值
HRESULT GetHeaderItem(
[in] VARIANT item,
//item:传入整型类型,按索引号返回项目,传入字符串型表示按
//项目名称查找项目
[out] BSTR *itemvalue
//itemvalue:按约定格式的字符串表示项目名称及项目值,
//如“制图张三”
);
方法调用成功时:返回VARIANT TRUE; 否则:VARIANT FALSE。
H.2.2.6 获取明细表项目数
HRESULT GetBomCount(
[out] long * count //count:为图纸明细表项数(以行为单位)
);
方法调用成功时:返回 VARIANT TRUE; 否则:VARIANT FALSE。
H.2.2.7 获取明细表头
HRESULT GetBomHeader(
GB/T 18726—2011
[out] BSTR *header
//图纸明细表表头信息字符串,如“序号代号名称-数量材料”
);
方法调用成功时:返回 VARIANT TRUE; 否则:VARIANT FALSE。
H.2.2.8 获取明细表项目值
HRESULT GetBomItem(
[in] int index, //明细表项索引号,由下向上、由右到左
[out] BSTR *itemvalue //明细表项值,如“2-MDE-56-1-102~ 机 盖
1HT15-33”
);
|
|
---|---|
H.2.2.9 获取技术要求文本 | |
|
[out] BSTR *instruction //技术要求文本字符串
);
方法调用成功时:返回 VARIANT TRUE; 否则:VARIANT FALSE。
H.2.2.10 获取模型类型
HRESULT GetModelType(
[out] BYTE * type //0— 图纸,1——零件模型,2——装配模型
);
方法调用成功时:返回 VARIANT TRUE; 否则:VARIANT FALSE。
H.2.2.11 获取模型名称
HRESULT GetModelName(
[out] BSTR * modelname //获得模型的名称
)
方法调用成功时:返回VARIANT TRUE;
该方法仅供零件模型和装配模型使用。
否则:VARIANT FALSE。
H.2.2.12 获取装配描述符
HRESULT GetAsmStructer(
[out] BSTR * structure //装配结构描述字符串
);
方法调用成功时:返回 VARIANT TRUE;
该方法仅供装配模型使用。
示例: “0”锥齿轮减速箱
否则:VARIANT FALSE。
1.1基座主体
1.2-垫块
1.3螺栓
2-圆锥大齿轮
3-圆锥小齿轮
4^调整垫片”
以上字符串条目之间用回车符分隔,描述了图 H.1 所示装配结构。
0
style="width:8.34008in;height:6.96674in" />锥齿轮减速器
2
3
基座
1.1
1.2
1.3
圆锥大齿轮
圆锥小齿轮
调整垫片
GB/T 18726—2011
基座基体
垫块
螺栓
图 H.1
GB/T 18726—2011
(资料性附录)
CAD 图形数据转换接口实例
I.1 ICADExchange 接口定义
a) 本接口定义了对 CAD
图形数据进行标准化转换的方法。该接口用于实现规范的5.3.4的 规定。
b) 本组件运行在基于MicroSoft Windows操作系统的微机环境下。
c) 本组件描述采用MIDL 格式,用采用MFC 语言编写。
d) 所有支持COM 技术的编程语言均可以使用本接口,例如,Visual
C++、Visual Basic、VBA、 Delphi、PowerBuilder等。
e) 接口的 IDL 如下:
//ICADExchange 组件对象的 idl定义:
import "oaidl.idl";
import "ocidl.idl";
object,
uuid(5D258D00-782F-4093-BA36-9550B74DB410),
dual,
helpstring("IExchange Interface"),
pointer default(unique)
]
interface IExchange:IDispatch
[id(1),helpstring("method GetSupportIn")] HRESULT GetSupportIn([out]
long
* count,[out] BSTR *exts,[out] BSTR *vers);
[id(2),helpstring("method GetSupportOut")] HRESULT
GetSupportOut([out]
long * count,[out] BSTR *exts,[out] BSTR* vers);
[id(3),helpstring("method ReadFile")] HRESULT ReadFile([in] BSTR
filename);
[id(4),helpstring("method WriteFile")] HRESULT WriteFile([in] BSTR
filename);
};
uuid(FF21666D-E9D1-49E8-9A47- 144C0552626C),
version(1.0),
helpstring("CADExchange 1.0 Type Library")
]
library CADEXCHANGELib
importlib("stdole32.tlb");
importlib("stdole2.tlb");
GB/T 18726—2011
uuid(E3A579F6-B393-4338-8096-770B1CCB4ACC),
helpstring("Exchange Class")
]
Coclass Exchange
[default] interface IExchange;
;
};
I.2 ICADExchange 接口描述
I.2.1 获取组件支持的输入文件格式
HRESULT GetSupportIn(
[out] long * count,
[out] BSTR *exts,
[out] BSTR * vers
);
//组件支持读入的文件种类数量
//所支持的文件后缀字符串数组
//所支持的文件后缀类型版本号
方法调用成功时:返回 VARIANT TRUE;
I.2.2 获取组件支持的输出文件格式
否则:VARIANT FALSE。
HRESULT GetSupportOut(
[out] long * count, //组件支持输出的文件种类数量
[out] BSTR *exts, //所支持的文件后缀字符串数组
[out] BSTR* vers //所支持的文件后缀类型版本号
);
方法调用成功时:返回 VARIANT TRUE; 否则:VARIANT FALSE。
I.2.3 读入支持的格式文件
HRESULT ReadFile(
[in] BSTR filename //读入的文件名称(带路径)
);
方法调用成功时:返回 VARIANT TRUE; 否则:VARIANT FALSE。
I.2.4 输出格式文件
HRESULT WriteFile(
[in] BSTR filename //输出的文件名称(带路径)
);
方法调用成功时:返回VARIANT TRUE;
否则:VARIANT FALSE。
GB/T 18726—2011
(资料性附录)
计算机辅助工艺设计软件开放接口实例
J.1 CAPP 软件数据构成的接口对象结构关系模型(见图J.1)
style="width:12.32014in;height:7.89375in" />
图J.1 CAPP 软件数据构成的接口对象结构关系模型
J.2 CAPP 软件数据结构模型中接口对象的名称
零部件: IPart
加工过程单元集(加工过程单元): IProcessUnits(IProcessUnit)
产品属性集(产品属性): IProductPropertys(IProductProperty)
加工属性集(加工属性): IManufacturingPropertys(IManufacturingProperty)
管理属性集(管理属性): IManagementPropertys(IManagementProperty)
过程记录集(过程记录): IProcessRecordsets(IProcessRecordset)
字段内容集(字段内容): IRecordFieldContents(IRecordFieldContent)
GB/T 18726—2011
J.3 CAPP 接口对象继承关系模型(见图J.2)
style="width:10.95323in;height:15.52672in" />JCappBase
JProcessRecordset
IPT.
IProcessUInit
IC)bjProperly
[RecordF eldContent
JManagementProperly
IManagementProperty
1ManufacruringProperty
IroductProperly
IObjCollection
JProcessl,nits
ProcessRecordsets
IProductPropertys
IManagement'rupertys
IMaufacturinyProperlys
IkecordFieldContents
图 J.2 CAPP 接口对象继承关系模型
GB/T 18726—2011
在图J.2 中:
a) ICappBase:所有接口对象类的基类;
b)
IObjProperty:所有属性对象类的基类,它提供了访问所有属性对象的共同方法;
c)
IObjCollect:所有集合对象类的基类,它提供了访问所有集合对象的共同方法。
J.4 CAPP 数据结构模型中接口对象定义
a) 本组件定义了一组用于CAPP 软件系统开放数据存取的接口;
b) 本组件运行在基于MicroSoft Windows 操作系统的微机环境下;
c) 本组件描述采用MIDL 格式,用MFC 语言编写;
d) 所有支持COM 技术的编程语言均可以使用本接口,例如 Visual
C+十、Visual Basic、VBA、 Delphi、PowerBuilder等;
e) 接口的 IDL 如下:
//icapp.idl:IDL source for icapp.dll
import "oaidl.idl";
import "ocidl.idl";
interface ICappBase:IDispatch
[propget,id (1),helpstring("属性:对象的名称")]
HRESULT Name([out,retval] BSTR * pVal);
[id(2),helpstring("方法:得到最近的运行错误代码")]
HRESULT GetLastErrorCode(int * iErrorCode);
;
interface IObjProperty:ICappBase
[propget,id(1),helpstring("属性:属性名称")]
HRESULT PropName([out,retval] BSTR *pVal);
[propget,id (2),helpstring("属性:属性值")]
HRESULT PropValue([out,retval] BSTR *pVal);
};
interface IObjCollection:ICappBase
[propget,id(1),helpstring("属性:对象个数")]
HRESULT ObjCount ([out,retval] long *pVal);
[id (2),helpstring("方法:通过顺序号得到集合中的对象")]
HRESULT GetObjAt(long Index ,ICappBase × pCappBase);
[id(3),helpstring("方法:通过对象名称得到集合中的对象")]
HRESULT GetObjByName(BSTR ObjName ,ICappBase * pCappBase);
;
interface IParts:IObjCollection {};
interface IPart:ICappBase
[propget,id(1),helpstring("属性:产品代号")]
GB/T 18726—2011
HRESULT ProductCode([out,retval] BSTR ×pVal);
[propget,id (2),helpstring("属性:产品的版本")]
HRESULT ProductVersion([out,retval] BSTR *pVal);
[propget,id(3),helpstring("属性:零部件代号")]
HRESULT PartCode([out,retval] BSTR *pVal);
[id(4),helpstring("方法:得到加工单元集")]
HRESULT GetProcessUnits(IProcessUnits * pProcessUnits);
[id(5),helpstring("方法:得到从属于该部件的零部件")]
HRESULT GetSubParts(IParts * pParts);
};
interface IPartFactory:ICappBase
[id(1),helpstring("方法:创建IPart接口对象")]
HRESULT Create (BSTR ProductCode,BSTR ProductVersion,BSTR
PartCode,IPart
* pPart);
;
interface IProductProperty:IObjProperty {};
interface IProductPropertys:IObjCollection{};
interface IManagementProperty:IObjProperty {};
interface IManagementPropertys:IObjCollection {};
interface IManufacturingProperty:IObjProperty {};
interface IManufacturingPropertys:lobjCollection{};
interface IProcessUnits:IObjCollection{}
interface IProcessUnit:ICappBase
[id(1),helpstring("方法:得到子加工单元集")]
HRESULT GetSubUnits(IProcessUnits * pProcessUnits);
[id(3),helpstring("方法:得到产品属性集")]
HRESULT GetProductProps(IProductPropertys * pProdeuctPropertys);
[id(4),helpstring("方法:得到加工属性集")]
HRESULT GetManufacturingProps(IManufacturingPropertys *
pManufacturingPropertys);
[id(5),helpstring("方法:得到设计管理属性集")]
HRESULT GetManagementProps(IManagementPropertys *
pManagemnetPropertys);
[id(6),helpstring("方法:得到过程记录集")]
HRESULT GetProcessRecordsets(IProcessRecordsets *
pProcessRecordsets);
};
interface ICards:IObjCollection {};
interface IRecordFieldContent:IObjProperty{};
interface IRecordFieldContents:IObjCollection{};
interface IProcessRecordsets:IObjCollection {};
interface IProcessRecordset:ICappBase
[id(1),helpstring("方法:得到当前的记录字段内容集)]
GB/T 18726—2011
HRESULT GetFieldContents(IRecordFieldContents *
[id(2),helpstring("方法:指向第一条记录)]
HRESULT MoveFirst();
[id(3),helpstring("方法:指向下一条记录)]
HRESULT MoveNext();
pFieldContents);
};
J.5 CAPP 数据结构模型中接口对象描述
J.5.1 ICappBase 接口对象描述
interface ICappBase:IDispatch
[propget,id (1),helpstring("属性:对象的名称")]
HRESULT Name([out,retval] BSTR *pVal);
[id(2),helpstring("方法:得到最近的运行错误代码")]
HRESULT GetLastErrorCode(int * iErrorCode);
;
a) ICappBase 作为CAPP 数据接口对象的基类来定义;
b) HRESULT Name([out,retval] BSTR *pVal)作为 ICappBase
接口的传出属性来定义,用 于获得具体接口对象的名称;
c) HRESULT GetLastErrorCode(int * iErrorCode)作为 ICappBase
接口的一个方法来定义。 实现该方法的目的是为了返回任何 CAPP
接口对象在执行过程中出现错误的原因。 iErrorCode
是该方法的一个传出参数。对于这个传出参数必须约定其意义。
示例:
# define IsOK 0 //执行正确
|
|
|
---|---|---|
··· | ||
|
|
|
|
|
|
|
|
//错误的参数类型 |
··
在实际的设计工程软件的集成开发中,常常因为各种原因造成接口调用的失败,仅仅利用TRUE
和FALSE
来反映调用的状态,不利于更快速地找到接口调用失败的原因并解决出现的问题。所以建
议在所有的CAPP 接口对象的实现中尽量都对该方法给予支持。
这种约定是开放的、可以扩充的。其具体的含义可能与不同的系统对接口实现的方式有关。例如,
基于文件系统的CAPP 与基于数据库系统的 CAPP 可能就不一样。
J.5.2 IObjProperty 接口对象描述
interface IObjProperty:ICappBase
[propget,id(1),helpstring("属性:属性名称")]
HRESULT PropName([out,retval] BSTR *pVal);
[propget,id (2),helpstring("属性:属性值")]
GB/T 18726—2011
HRESULT PropValue([out,retval] BSTR *pVal);
};
a) IObjeProperty
作为所有属性接口对象的基类来定义,用于获得某个属性的名称或属性值。
b) HRESULT PropName([out,retval] BSTR *pVal) 作为 IObjProperty
接口中的传出属性 定义,用于获得某属性对象的属性名称。
调用成功时:返回VARIANT TRUE, 否则:VARIANT FALSE;
如果要进一步获得调用失
败的原因,可调用父类接口的 GetLastErrorCode(…)方法来实现。
c) HRESULT PropValue([out,retval] BSTR
*pVal)作为IObjProperty接口中的传出属性定
义,用于获得某属性对象的属性值。
调用成功时:返回VARIANT TRUE; 否则:VARIANT FALSE。
如果要进一步获得调用失
败的原因,可调用父类接口的 GetLastErrorCode(…)方法来实现。
J.5.3 IObjCollection 接口对象描述
interface IObjCollection:ICappBase
[propget,id(1),helpstring("属性:对象个数")]
HRESULT ObjCount([out,retval] long *pVal);
[id(2),helpstring("方法:通过顺序号得到集合中的对象")]
HRESULT GetObjAt(long Index ,ICappBase * pCappBase);
[id(3),helpstring("方法:通过对象名称得到集合中的对象")]
HRESULT GetObjByName(BSTR ObjName ,ICappBase * pCappBase);
};
a) IObjCollection 是所有 CAPP
集合接口对象的基类,用于实现对对象集合的管理,对象集合的
遍历,以及对集合对象中某对象的查找。
b) HRESULT ObjCount([out,retval] long *pVal)作为IObjCollection
接口的传出属性定义, 用于获得对象集合中对象的个数。
调用成功时:返回VARIANT TRUE; 否则:VARIANT FALSE。
如果要进一步获得调用失
败的原因,可调用父类接口的GetLastErrorCode(…)方法来实现。
c) HRESULT GetObjAt(long Index ,ICappBase * pCappBase)作为
IObjCollection 接口的方
法来定义,用于获得在对象集合中某顺序号的对象。
参数:
long Index 为指定的顺序号
ICappBase * pCappBase 为返回接口对象的指针
调用成功时:返回 VARIANT TRUE; 否则:VARIANT FALSE。
如果要进一步获得调用失
败的原因,可调用父类接口的GetLastErrorCode(…)方法来实现。
通过对 ObjCount(…)和 GetObjAt(…) 的实现可以实现对对象集合的遍历:
long iObjCount;
IObjCollection * pCollect =NULL;
…//创建 pCollect接口对象
iObjCount = pCollect->GetObjCount();//注意属性的操作写法的与IDL
中有所不同。
for( long ilndex =0;iIndex〈iObjCount;ilndex 十 十 )
GB/T 18726—2011
ICappBase * pCappBase = NULL;
pCollect->GetObjAt(iIndex ,pCappBase);
···
d) HRESULT GetObjByName(BSTR ObjName ,ICappBase * pCappBase) 作为
IObjCollection
接口的方法来定义,用于在对象集合中查找已知对象名称的某对象,并返回该对象的接口
指针。
参数:
BSTR ObjName为指定对象的名称。
ICappBase * pCappBase 为返回接口对象的指针。
调用成功时:返回 VARIANT TRUE; 否则:VARIANT FALSE。
如果要进一步获得调用失
败的原因,可调用父类接口的GetLastErrorCode(…)方法来实现。
J.5.4 IPart 接口对象描述
interface IParts:IObjCollection {};
interface IPart:ICappBase
[propget,id(1),helpstring("属性:产品代号")]
HRESULT ProductCode([out,retval] BSTR ×pVal);
[propget,id(2),helpstring("属性:产品的版本")]
HRESULT ProductVersion([out,retval] BSTR *pVal);
[propget,id(3),helpstring("属性:零部件代号")]
HRESULT PartCode([out,retval] BSTR ×pVal);
[id(4),helpstring("方法:得到加工单元集")]
HRESULT GetProcessUnits(IProcessUnits * pProcessUnits);
[id(5),helpstring("方法:得到从属于该部件的零部件")]
HRESULT GetSubParts(IParts * pParts);
};
interface IPartFactory:ICappBase
[id(1),helpstring("方法:创建 IPart接口对象")]
HRESULT Create(BSTR ProductCode ,BSTR ProductVersion,BSTR
PartCode,IPart × pPart);
};
a) IPart接口是所有其他CAPP
数据接口的访问入口,因为从具体的工艺来考虑,工艺数据都是
针对具体的零部件的。要获得某工艺数据首先要获得其针对的零部件。 IPart
正是对零部件
进行的接口定义。
其中最重要的方法是:HRESULT GetProcessUnits(IProcessUnits *
pProcessUnits) 用于
得到该零部件的加工单元集合。参数是一个用于返回的IProcessUnits的接口对象的指针。
调用成功时:返回VARIANT TRUE; 否则:VARIANT FALSE。
如果要进一步获得调用失
败的原因,可调用父类接口的 GetLastErrorCode(…)方法来实现。
b) IParts接口是 IPart的对象集合接口,主要用于在CAPP
中实现对产品结构的描述,从而在工
艺数据的汇总等操作中能实现更为实用的功能。
GB/T 18726—2011
实现产品结构遍历的主要方法是 IPart接口中的 HRESULT GetSubParts(IParts *
pParts)
方法,参数是IParts接口对象的指针,通过对GetSubParts(…)的递归调用实现对产品结构的
遍历。调用成功时:返回 VARIANT TRUE; 否则:VARIANT FALSE。
如果要进一步获得
调用失败的原因,可调用父类接口的GetLastErrorCode(…)方法来实现。
c) IPartFactory接口是用于创建 IPart接口对象的接口。其中最重要的方法是
HRESULT Create(
BSTR ProductCode ,
BSTR ProductVersion,
BSTR PartCode,
IPart * pPart);
//产品的代号
//产品的版本
//零部件代号
//用于返回的 IPart接口对象指针
调用成功时:返回VARIANT TRUE; 否则:VARIANT FALSE。
如果要进一步获得调用失
败的原因,可调用父类接口的 GetLastErrorCode(…)方法来实现。
J.5.5 IProcessUnit 接口对象描述
interface IProcessUnits:IObjCollection{}
interface IProcessUnit:ICappBase
[id(1),helpstring("方法:得到子加工单元集")]
HRESULT GetSubUnits(IProcessUnits * pProcessUnits);
[id(3),helpstring("方法:得到产品属性集")]
HRESULT GetProductProps(IProductPropertys * pProdeuctPropertys);
[id(4),helpstring("方法:得到加工属性集")]
HRESULT GetManufacturingProps(IManufacturingPropertys *
pManufacturingPropertys);
[id(5),helpstring("方法:得到设计管理属性集")]
HRESULT GetManagementProps(IManagementPropertys x
pManagemnetPropertys);
[id(6),helpstring("方法:得到过程记录集")]
HRESULT GetProcessRecordsets (IProcessRecordsets *
pProcessRecordsets);
};
a) IProcessUnit接口是CAPP
接口对象模型中的重要接口。它实现了对各种工艺数据的管理和 维护。
b) HRESULT GetSubUnits(IProcessUnits * pProcessUnits) 作为
IProcessUnit 的一个方法
来定义,用于获得从属于该工艺单元的子工艺单元集合。通过该方法的实现,可以遍历所有
的工艺数据。
c) 参数 IProcessUnits * pProcessUnits是一个用于返回的ProcessUnits
接口对象的指针。调 用成功时:返回VARIANT TRUE; 否则:VARIANT FALSE。
如果要进一步获得调用失败 的原因,可调用父类接口的
GetLastErrorCode(…)方法来实现。
d) HRESULT GetProductProps(IProductPropertys *
pProductPropertys)作为 IProcessUnit
的一个方法来定义,用于获得从属于该工艺单元的产品属性集合。
产品属性一般是在产品的设计过程中产生的,但在产品的工艺设计过程中要利用这些数据,
在产品的工艺数据汇总中更要利用该数据,有些产品的属性还被要求填写在工艺卡片中,
CAD 和 CAPP 的集成主要是该类数据的集成,所以该方法的实现是非常必要的。
参数 IProductProperys*
pProductPropertys是一个用于返回的IproductPropertys的对象指
针,调用成功时:返回 VARIANT TRUE; 否则:VARIANT FALSE。
如果要进一步获得调
用失败的原因,可调用父类接口的 GetLastErrorCode(…)方法来实现。
GB/T 18726—2011
e) HRESULT GetManufacturingProps(IManufacturingPropertys *
pManufacturingPropertys)作为
IProcessUnit的一个方法来定义,用于获得从属于该工艺单元的加工属性集合。主要涉及到
了零件制造的机床装备、刀具、量具、工装等以及额定工时等数据。
加工属性一般是在产品的工艺设计过程中产生的数据,
一般要求填写在工艺卡片中,在产品 的工艺数据汇总、CAPP 系统与ERP
等系统的集成中一般都会用到该类数据。所以实现该方
法是非常必要的。
参数IManufacturingPropertys *pManufacturingPropertys是一个用于返回
IManufacturing-
Propertys对象的指针,调用成功时:返回VARIANT TRUE; 否则:VARIANT FALSE。
如
果要进一步获得调用失败的原因,可调用父类接口的GetLastErrorCode(…)方法来实现。
f) HRESULT GetManagementProps(IManagementPropertys *
pManagemnetPropertys)作为
IProcessUnit的一个方法来定义,用于获得从属于该工艺单元的管理属性集合。
管理属性一般是在产品的工艺设计过程中产生的数据,
一般要求填写在工艺卡片中,管理属性
的内容一般是该工艺的设计者,设计时间,修改时间,校核者,校核时间等内容。在CAPP
系统
与PDM 等系统的集成中一般都会用到该类数据。所以实现该方法是必要的。
参数 IManagementPropertys pManagemnetPropertys 是一个用于返回的
IManagement-
Propertys的对象指针,调用成功时:返回 VARIANT TRUE; 否则:VARIANT
FALSE。 如
果要进一步获得调用失败的原因,可调用父类接口的GetLastErrorCode(…)方法来实现。
g) HRESULT GetProcessRecordsets(IProcessRecordsets *
pProcessRecordsets) 作为 IPro-
cessUnit的一个方法来定义,用于获得从属于该工艺单元的加工过程记录集合。
加工过程记录数据一般是在产品的工艺设计过程中产生的数据,
一般要求填写在工艺卡片
中,是工艺设计的主要工作结果,大量的用于工艺的各种汇总中,在 CAPP
系统与 EPR 等系
统的集成中一般都会用到该类数据。所以实现该方法是非常必要的。
参数 IProcessRecordsets *
pProcessRecordsets是一个用于返回的IProcessRecordsets的对
象指针,调用成功时:返回 VARIANT TRUE; 否则:VARIANT FALSE。
如果要进一步获
得调用失败的原因,可调用父类接口的GetLastErrorCode(…)方法来实现。
J.5.6 IProcessRecordset 接口对象描述
interface IRecordFieldContent:IObjProperty{};
interface IRecordFieldContents:IObjCollection{};
interface IProcessRecordsets:IObjCollection {};
interface IProcessRecordset:ICappBase
[id(1),helpstring("方法:得到当前的记录字段内容集)]
HRESULT GetFieldContents(IRecordFieldContents * pFieldContents);
[id(2),helpstring("方法:指向第一条记录)]
HRESULT MoveFirst();
[id(3),helpstring("方法:指向下一条记录)]
HRESULT MoveNext();
;
a)
IProcessRecordset接口是对加工过程记录数据设计的,用于管理维护和访问加工过程记录数
据。加工过程记录数据一般是在产品的工艺设计过程中产生的数据,
一般要求填写在工艺卡
GB/T 18726—2011
片中,是工艺设计的主要工作结果,大量的用于工艺的各种汇总中,在CAPP
系统与 EPR 等系 统的集成中一般都会用到该类数据。
b) HRESULT GetFieldContents(IRecordFieldContents x pFieldContents)作
为 IProcess-
Recordset接口的一个方法来定义,用于获得当前记录的字段内容集合。
参数 IRecordFieldContents * pFieldContents是一个用于传出的
IRecordFieldContents 接口 对象指针,通过对
IRecordFieldContents接口对象的操作,可以得到记录字段的个数,每个字
段的名称,每个字段的内容等。
调用成功时:返回VARIANT TRUE; 否则:VARIANT FALSE。
如果要进一步获得调用失
败的原因,可调用父类接口的GetLastErrorCode(…)方法来实现。
c) HRESULT MoveFirst() 和 HRESULT MoveNext() 作为 IProcessRecordset
接口对象的方 法来实现,主要用于改变当前的工艺过程记录。
IProcessRecordset 接口通过 MoveFirst() 以及 MoveNext()
接口方法实现工艺过程记录的遍
历,如果GetFieldContents方法中返回的 pFieldContents为 NULL
表示已经遍历完毕。
调用成功时:返回 VARIANT TRUE; 否则:VARIANT FALSE。
如果要进一步获得调用失
败的原因,可调用父类接口的 GetLastErrorCode(…)方法来实现。
J.6 CAPP 工艺卡片浏览接口对象定义
a) 本组件定义了一个用于浏览CAPP 工艺卡片的接口;
b) 本组件运行在基于MicroSoft Windows 操作系统的微机环境下;
c) 本组件描述采用MIDL 格式,用 MFC 语言编写;
d) 所有支持 COM 技术的编程语言均可以使用本接口,例如,Visual
C++、Visual Basic、VBA、 Delphi、PowerBuilder等 ;
e) 接口的IDL 如下:
interface ICappCardViewX:IDispatch
//浏览窗口的句柄,传出属性
[id(0),propget helpstring("浏览窗口的句柄,传出")]
HRESULT Window([out,retval] long* phwnd);
//浏览文件源的路径和文件名,传入传出属性
[id(1),propget,helpstring("浏览文件源的路径和文件名,传出")
HRESULT src([out,retval] BSTR* pVal);
[id(1),propput,helpstring("浏览文件源的路径和文件名,传入")]
HRESULT src([in] BSTR pVal);
//当前的浏览方式,传入传出属性
[id(2),propget,helpstring("得到当前的浏览方式,传出,如Pan.Zoom,ZoomToRect,…")]
HRESULT UserMode([out,retval] BSTR* pVal);
[id(2),propput,helpstring("改变当前的浏览方式,传入,如
Pan.Zoom,ZoomToRect,…")]
HRESULT UserMode([in] BSTR pVal);
//支持路径,传入传出属性
[id(3),propget,helpstring("支持路径,传出")]
HRESULT SupportPath ([out,retval] BSTR* pVal);
[id(3),propput,helpstring("支持路径,传入")]
HRESULT SupportPath([in] BSTR pVal);
GB/T 18726—2011
//字体路径,传入传出属性
[id(4),propget,helpstring(字体路径,传出")]
HRESULT FontPath([out,retval] BSTR* pVal);
[id(4),propput,helpstring("字体路径,传入")]
HRESULT FontPath([in] BSTR pVal);
//当前浏览坐标范围,传入传出属性
[id(5),propget,helpstring("当前浏览范围")]
HRESULT CurrentView(
[out] double* left,
[out] double* right,
[out] double× bottom,
[out] double* top);
[id(5),propput,helpstring("当前浏览范围")]
HRESULT CurrentView(
[in] double [in] double [in] double
[in] double
left,
right,
bottom,
top);
//整个卡片的坐标范围,传出属性,主要用于全部显示计算图形范围
[id(5),propput,helpstring("整个卡片的坐标范围")]
HRESULT GetDrawingExtents(
[out] double* left,
[out] double* right,
[out] double* bottom,
[out] double* top);
};
J.7 CAPP 工艺卡片浏览接口对象描述
J.7.1 获得浏览窗口的句柄
HRESULT Window ([out,retval] long* phwnd //窗口句柄
方法调用成功时:返回VARIANT TRUE; 否则:VARIANT FALSE。
J.7.2 指定浏览文件源的路径和文件名
HRESULT src([in] BSTR pVal //指定的文件源路径和名称
);
方法调用成功时:返回VARIANT TRUE; 否则:VARIANT FALSE。
J.7.3 设置当前浏览的工作方式
HRESULT UserMode([in] BSTR*pVal
style="width:0.55334in;height:0.63316in" />//浏览的工作方式
);
对浏览的工作方式用字符串来表达,同时对字符串对应的操作有一定的约定。
GB/T 18726—2011
示例:
"Pan" 对应平移操作,"Zoom+" 对应放大操作,"Zoom-"
对应缩小操作,"ZoomToRect" 对应缩放到用户指定的窗
口操作等。
方法调用成功时:返回VARIANT TRUE; 否则:VARIANT FALSE。
J.7.4 设置当前浏览的坐标范围
HRESULT CurrentView(
[in] double left, //左下角 x 坐标
[in] double right, //右上角 x 坐标
[in] double bottom,//左下角 y 坐标
[in] double top; //右上角 y 坐标
);
用于通过程序而不是用户交互来设置当前浏览的坐标范围。
方法调用成功时:返回VARIANT TRUE; 否则:VARIANT FALSE。
J.7.5 获得整个卡片的坐标范围
HRESULT
GetDrawingExtents(
[out] double* left, / / 左 下 角 x 坐标
[out] double* right,, //右上角 x 坐标
[out] double* bottom, //左下角 y 坐标
[out] double* top; //右上角y 坐标
);
用于获取整个卡片的图形浏览范围。
方法调用成功时:返回VARIANT TRUE; 否则:VARIANT FALSE。
J.8 CAPP 工艺过程数据提取接口对象定义
a) 本组件定义了一个用于工艺过程数据提取的接口;
b) 本组件运行在基于 MicroSoft Windows 操作系统的微机环境下;
c) 本组件描述采用 MIDL 格式,用采用MFC 语言编写;
d) 所有支持 COM 技术的编程语言均可以使用本接口,例如 Visual
C++、Visual Basic、VBA、 Delphi、PowerBuilder等;
e) 接口的IDL 如下:
interface IProcessData:ICappBase
[id(1),helpstring("方法:获得产品工艺过程数据")]
HRESULT GetData([in] BSTR ProductCode, //产品代号
[in] BSTR ProductVersion, // 产品版本
[in] BSTR PartCode, / / 零 部 件 代 号
[in] BSTR ProcessName // 过程名称
[in] BSTR ProcessDataFile); //过程数据文件名称
};
style="width:5.00069in;height:6.60694in" />
GB/T 18726—2011
J.9 CAPP 工艺过程数据提取接口对象描述
本接口用于获取产品工艺过程数据。
通过CAPP
接口对象模型中提供的接口对象的组合使用,完全可以获得产品工艺过程的所有数
据。为了简化该数据的获得,IProcessData
接口提供一个直接获得产品工艺过程数据的接口对象的
定义。
获取过程数据:
HRESULT GetData([in] BSTR ProductCode, //产品代号
[in] BSTR ProductVersion, //产品版本
[in] BSTR PartCode, //零部件代号
[in] BSTR ProcessName //过程名称
[in] BSTR ProcessDataFile); //过程数据文件名称
使用该方法需要提供的参数是产品的代号、产品的版本、零部件代号、工艺过程名称。获得的数据
存放在参数 ProcessDataFile指定的 XML 格式文件中。
工艺过程数据文件的可以参照以下模式来生成。
|
---|
|
|
|
|
|
图 J.3 工艺过程数据 XML 文件参考结构
调用成功时:返回VARIANT TRUE; 否则:VARIANT FALSE。
如果要进一步获得调用失败的
原因,可调用父类接口的GetLastErrorCode(…) 方法来实现。
J.10 CAPP 工艺汇总数据提取接口对象定义
a) 本组件定义了一个用于工艺汇总数据提取的接口;
b) 本组件运行在基于 MicroSoft Windows 操作系统的微机环境下;
GB/T 18726—2011
c) 本组件描述采用MIDL 格式,用MFC 语言编写;
d) 所有支持COM 技术的编程语言均可以使用本接口,例如,Visual
C十十、Visual Basic、VBA、 Delphi、PowerBuilder等;
e) 接口的IDL 如下:
interface
ICappSumData:
ICappBase{
[id(1),helpstring("方法:获得产品工艺统计数据")]
HRESULT GetData([in] BSTR ProductCode, //产品代号
[in] BSTR ProductVersion,
[in] BSTR PartCode,
[in] BSTR DataSrcDefine
[in] BSTR SumDataFile);
;
//产品版本
//零部件代号
//提取数据源字段定义
//提取结果数据文件名称
J.11 CAPP 工艺汇总数据提取接口对象描述
J.11.1 概述
本接口提供了工艺数据汇总的功能。产品工艺统计数据中涉及的数据非常多,有产品的属性数据,
产品的加工属性数据,以及产品的加工过程记录数据等。同时每个企业中的工艺汇总所需要的数据又
是不一样的,可以通过CAPP
接口对象模型中提供的接口对象的组合使用来获得产品工艺过程的所有
数据。为了简化该数据的获得,本标准提供一个直接获得产品工艺统计数据的数据提取接口对象的定
义。数据提取之后的统计、合并、汇总工作由其他系统解决。
数据汇总的对象是某个产品或某个零部件下的所有零部件,汇总的过程中需要遍历产品结构。
J.11.2 工艺数据汇总
HRESULT GetData(
[in] BSTR ProductCode,
[in] BSTR ProductVersion,
[in] BSTR PartCode,
[in] LONG *DataSrcDefine,
[in] BSTR SumDataFile
//产品代号
//产品版本
//零部件代号
//提取数据源字段定义
//提取结果数据
); 文件名称
a) 工艺数据汇总接口方法
GetData(…)需要的基本参数是产品的代号,产品的版本,零部件的 代号;
b) 需要获取的数据源定义,是BSTR
DataSrcDefine参数,该方法通过该参数的定义描述来提取 数据,如果该参数为
NULL, 则不提取任何数据。
有关汇总数据源字段定义,可以参照以下解释协议:
GB/T 18726—2011
style="width:11.90667in;height:9.1333in" />零件/部件对象
零部件元件信息集
加工过程单元集
(工艺方案集)
加工过程单元
(工艺方案)
属性集对象
基本信息/管理信息
工序单元集
更改记录集
过程记录集(审签)
工序单元
属性集对象
基本信息/管理信息
工步单元集
设备
工装夹具
工时定额
检测
工步单元
属性集对象
基本信息/管理信息
加工工艺参数
刀具
量具
图 J.4 零部件的制造工艺信息的基本数据内容模型
1) DataSrcDefine
是一个指向产品对象,并包括了产品对象完整工艺信息的复杂结构的 指针;
2) 基本的数据结构从图J.1 所示的对象结构关系模型展开发展而来;
3)
产品所有的制造工艺数据都可以通过该对象检索并获取,并且,零部件制造工艺信息的数
据模型可以按照图J.4 所示来进行结构化表达。
c) 获得的数据存放在参数 SumDataFile 指定的文件中。
文件可以参照以下协议生成:
1) 数据文件 SumDataFile 以 XML 的标准来生成;
2) 数据文件 SumDataFile 的对象节点定义遵循由统一 的 XML Schema
规范(XSD,XML Schema Definition)确定的数据类型和结构定义方法;
3) 数据文件 SumDataFile 所代表的零部件制造工艺信息遵循图J.4
所规范的结构关系。
示 例 :工序对象的基本信息可以定义如下:
(Class Name="工序" Type=" 工序基类">
\<Attr Name="USEDNAME" Alias="文件夹" Type="ObjTable" Size="1"
Spec="private" ClsName ="文件"/>
\<Attr Name="OP NO"Alias="序号" Type="long" Size="1" Spec="public"/>
\<Attr Name="OPER NO"Alias="工序号" Type="long"Size="1"
Spec="public"/>
\<Attr Name="OPER NAME" Alias="工序名称" Type="string"
Size="64"Spec="public"/)
\<Attr Name="OPER DESCRIPTION" Alias="操作说明" Type="string"
Size="4000"Spec="pub-
GB/T 18726—2011
lic"/>
\</Class)
更改记录对象的基本能信息可以定义如下:
(Class Name="更改记录" Type=" 对象表">
(Attr \<Attr
(Attr
\<Attr
\</Class)
Name="CHANGE NO"Alias="更改次" Type="string" Size="8" Spec="public"/)
Name="CHANGE DATE"Alias="更改日期"Type="string"
Size="16"Spec="public"/>
Name="CHANGE REV" Alias="版本" Type="string" Size="8" Spec="public"/)
Name="CHANGE CONTENT"Alias="更改摘要" Type="string" Size="200"
Spec="public"/>
style="width:3.11992in" />
GB/T 18726—2011
更多内容 可以 GB-T 18726-2011 现代设计工程集成技术的软件接口规范. 进一步学习